from aiogram import F, Router
from aiogram.types import Message, ReplyKeyboardRemove
from aiogram.filters import CommandStart, Command
from aiogram.fsm.context import FSMContext
from keyboards.set_menu import just_keyboard, cancel_keyboard, report_keyboard

from db.PGConnector import PGPurchase, PGFamily
from .utils import try_except_decorator

router = Router()


@try_except_decorator
@router.message(CommandStart())
async def process_start_command(message: Message):
    await message.answer("""
Привет! Я бот, который поможет вести учет расходов в твоей семье.
"Создать семью" - создайте семью для учета расходов
"Вступить в семью" - подключитесь к уже существующей семье
"Покупка" - внесите расходы по покупке
"Отчет" - получите краткий или подробный отчет по расходам в семье
"Пригласить в семью" - получите пригласительный код
""", reply_markup=just_keyboard())


@try_except_decorator
@router.message(F.text == 'Пригласить в семью')
async def get_current_hash(message: Message):
    user_id = message.chat.id

    pg_family = PGFamily()
    hash_link = pg_family.get_hash_link_for_user(user_id)

    await message.answer('Ссылка-приглашение для вашей активной семьи')
    await message.answer(hash_link)


@try_except_decorator
@router.message(F.text == 'Вернуться в меню')
async def cmd_cancel(message: Message, state: FSMContext):
    await state.clear()
    await message.answer(
        text="Действие отменено",
        reply_markup=just_keyboard()
    )

@try_except_decorator
@router.message(F.text == 'Помощь')
async def cmd_cancel(message: Message, state: FSMContext):
    await state.clear()
    await message.answer(
        text='''
⏺️ Создать семью 

Cоздайте группу (Семью), где будут записываться и считаться расходы каждого члена группы.
---------------------------------------

⏺️ Вступить в семью

Отправьте «код-приглашение» семьи, в которую вы хотите вступить.

---------------------------------------

⏺️ Покупка

В первом сообщении запишите сумму покупки в рублях (число), в следующем сообщении запишите название магазина. 
Покупка сохранится и добавится к остальным расходам.

---------------------------------------

⏺️ Отчет

Выводится общая сумма расходов.

---------------------------------------

⏺️ Пригласить в семью

Получите код для приглашения других пользователей в вашу семью. 
Нажав «Вступить в семью» и введя ваш код, пользователь станет членом этой семьи.

---------------------------------------

⏺️ Выбрать семью

Получите список всех ваших «Семей» и их уникальный ID. 
Для выбора нужной семьи, отправьте сообщение с ID этой семьи.

---------------------------------------

⏺️ Отчет

1) Посмотреть отчет по своим покупкам за неделю
2) Посмотреть общую сумму расходов каждого пользователя в вашей семье за последние 30 дней

''',
        reply_markup=just_keyboard()
    )
